#include <algorithm>
#include <stack>
#include <stdio.h>
using namespace std;
struct Node
{
	int x,y,id;
}Ar[107];
bool cmp_node(Node a,Node b)
{
	int ans=a.x*b.y-b.x*a.y;
	return ans>0;
}
int Vex(Node x1,Node x2,Node x3)
{
	return x1.x*x2.y+x3.x*x1.y+x2.x*x3.y-x3.x*x2.y-x2.x*x1.y-x1.x*x3.y;
}
int main()
{
	int n,i,j,z;
	scanf("%d",&z);
	while(z--)
	{
		scanf("%d",&n);
		stack<Node> Ns;
		int Fn=1,Fx=99999;
		double ans=0;
		for(i=0;i<n;i++)
		{
			scanf("%d%d",&Ar[i].x,&Ar[i].y);
			if(Ar[i].x < Fx || (Ar[i].x == Fx && Ar[i].y < Ar[Fx].y))
			{
				Fn=i;
				Fx=Ar[i].x;
			}
		}
		swap(Ar[0],Ar[Fn]);
		sort(Ar+1,Ar+n,cmp_node);
		for(i=0;i<n;i++)
		{
			if(!(Vex(Ar[i-2],Ar[i-1],Ar[i])>0) && i>1 )
				Ns.pop();
			Ns.push(Ar[i]);
		}
		Node a=Ns.top();
		do
		{
			double x=Vex(Ar[0],a,Ns.top());
			ans += x>0?x:x*-1/2.0;
			a=Ns.top();
			Ns.pop();
		}while(Ns.size()>1);
		printf("%.1f\n",ans);
	}
}
